/*
 * File:   DiscardStrategy.h
 * Author: root
 *
 * Created on November 16, 2008, 11:54 AM
 */

#include "Strategy.h"

#ifndef _DISCARDSTRATEGY_H
#define	_DISCARDSTRATEGY_H

class DiscardStrategy : public Strategy {
public:

    DiscardStrategy(const string& myName, int myParameterSize) : Strategy(myName, myParameterSize) {}
    
    DiscardStrategy(int myWeight) : Strategy(myWeight) {}

    // The pick discard function takes as an argument if the last card in the hand card stack was picked from the
    // discard. If so, the strategy should not consider it for discard.
    virtual int pickDiscard(CCardStack*, bool, const GameState*) = 0; // This function should NOT modify the game state
    
    virtual ~DiscardStrategy() {}
};

#endif	/* _DISCARDSTRATEGY_H */

